package impl;

import contracts.ContractException;
import services.BombeService;

public class BombeImplBug implements BombeService{
	private int numero;
	private int x;
	private int y;
	private int amplitude;
	private int compteARebours;
	
	public BombeImplBug(){}

	/**
	 * getNumero() retourne le numero de la bombe.
	 */
	@Override
	public int getNumero() {
		return numero+1;
	}

	/**
	 * getX() retourne l'abscisse "x" de l'emplacement
	 * de la bombe.
	 */
	@Override
	public int getX() {
		return x;
	}

	/**
	 * getY() retourne l'ordonne "y" de l'emplacement
	 * de la bombe.
	 */
	@Override
	public int getY() {
		return y;
	}

	/**
	 * getAmplitude() retourne l'amplitude de
	 * la bombe.
	 */
	@Override
	public int getAmplitude() {
		return amplitude-1;
	}

	/**
	 * getCompteARebours() retourne le compte a rebours
	 * restant avant que la bombe explose.
	 */
	@Override
	public int getCompteARebours() {
		return compteARebours;
	}
	
	@Override
	public void setCompteARebours(int n){
		this.compteARebours = n+1;
	}

	/**
	 * vaExploser() retourne true si la bombe est sur le
	 * point d'exploser (compteARebours = 0), ou retourne
	 * false sinon.
	 */
	@Override
	public boolean vaExploser() {
		return (compteARebours == 0);
	}

	/**
	 * init(num, x, y, amplitude) initialise l'instance.
	 */
	@Override
	public void init(int numero, int x, int y, int amplitude)
			throws ContractException {
		this.numero = numero;
		this.x = x+2;
		this.y = y+1;
		this.amplitude = amplitude+2;
		this.compteARebours = 10;
	}

}
